package com.ftg.learn.day12.datastruct;

import java.util.List;
import java.util.Stack;

/**
 * 栈  ： filo first in last out
 *   : 栈桢
 * @author 布衣
 */
public class LearnStack {

    public static boolean isCheck(String str){
        if(null == str || str.isEmpty()){
            return false;
        }
        if(str.charAt(0) == ']' || str.charAt(0) == '}'||str.charAt(0) == ')'){
            return false;
        }
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (stack.isEmpty()){
                stack.push(c);
            }else {
                if ((stack.peek() == '(' && c == ')')
                        || (stack.peek() == '[' && c == ']')
                        || (stack.peek() == '{' && c == '}')){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            }
        }
        return stack.isEmpty();
    }

    public static void main(String[] args) {

        String s = "([][][][])";
        System.out.println(isCheck(s));
//        Stack<Character> stack = new Stack<>();
//
//        for (int i = 0; i < s.length(); i++) {
//            char c = s.charAt(i);
//            if (stack.isEmpty()){
//                stack.push(c);
//            }else {
//                if ((stack.peek() == '(' && c == ')')
//                        || (stack.peek() == '[' && c == ']')
//                        || (stack.peek() == '{' && c == '}')){
//                    stack.pop();
//                }else {
//                    stack.push(c);
//                }
//            }
//        }
//        System.out.println(stack);
//        System.out.println(stack.isEmpty() ? "是合格的":"不是合格");


//        Stack<Character> stack = new Stack<>();
//        stack.add('f');
//        stack.push('c');
//        stack.push('d');
//        stack.push('e');
//        stack.add('x');
//
//        System.out.println(stack);
//
//        System.out.println(stack.get(stack.size() - 1));
//        stack.removeElementAt(stack.size()-1);
//
//        System.out.println(stack.pop());
//        System.out.println(stack.pop());
//        System.out.println(stack.pop());
//        System.out.println(stack.pop());

    }

}
